package com.sel.controle;

import java.util.List;

import com.sel.controle.helper.ReservaLaboratorioHelper;
import com.sel.controle.helper.ReservarHelper;
import com.sel.modelo.Reserva;
import com.sel.modelo.Usuario;

import DAO.CampiDAO;
import DAO.ReservaDAO;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;

public class Reserva_laboratorio extends Activity
{
	private Bundle conteudoExtra;
	private TextView texto;
	private Spinner terceiros;
	private EditText dataReserva;
	private EditText horaInicial;
	private EditText horaFinal;
	public  static Usuario usuario;
	private EditText mumeroLaboratorio;
	private EditText nomeCampi;
	private Button salvar;
	private ReservaLaboratorioHelper reservarHelper;

	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_reserva_de_laboratorio);
		
		conteudoExtra = getIntent().getExtras();
        
		Log.i("1","1");
        texto     = (TextView) findViewById(R.id.lb_reserva_para_terceiro_laboratorio);
        Log.i("2","2");
        terceiros = (Spinner) findViewById(R.id.cb_reserva_para_terceiro_laboratorio);
        
        setaMascara();
        preparaCampos(conteudoExtra);
        buscaAcao();
	}
	
	private void buscaAcao() 
    {
        salvar = (Button) findViewById(R.id.bt_salvar_reserva_laboratorio);
        salvar.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) 
            {
            	Log.i("3","3");
                SalvaReserva();
            }
        });
    }
	
	public void SalvaReserva()
    {
		Log.i("4","4");
    	reservarHelper = new ReservaLaboratorioHelper(this, conteudoExtra);
        if (reservarHelper.validaCamposReserva(this))
        {
            Reserva reserva       = reservarHelper.recebeReserva();
            ReservaDAO reservaDAO = new ReservaDAO(this);
            if (!reservaDAO.salvar(reserva))
            {
                AlertDialog.Builder dialogo = new AlertDialog.Builder(Reserva_laboratorio.this);
                dialogo.setTitle("( ! )");
                dialogo.setMessage("Erro ao salvar os dados!");
                dialogo.setNeutralButton("Ok", null);
                dialogo.show();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "Reserva Realizada com sucesso!", Toast.LENGTH_SHORT).show();
            }
            reservaDAO.fecharConexao();
            finish();
        }
    }

	@SuppressLint("ResourceAsColor") 
	private void preparaCampos(Bundle conteudoExtra2) 
	{
		if (Sessao.usuario != null)
        {
            if (Sessao.usuario.getTipo_Usuario() != 1)
            {
                texto.setVisibility(View.GONE);
                terceiros.setVisibility(View.GONE);
            }
            else
            {
                carregaFuncionarios();
            }
        }
        mumeroLaboratorio  = (EditText) findViewById(R.id.txt_numero_laboratorio_reserva);
        mumeroLaboratorio.setText(String.valueOf(conteudoExtra.getInt("NUMERO_LABORATORIO")));
        mumeroLaboratorio.setBackgroundColor(R.color.cinza_DCDCDC);
        mumeroLaboratorio.setEnabled(false);
        
        nomeCampi = (EditText) findViewById(R.id.txt_campi_reserva_laboratorio);
        
        CampiDAO campiDAO    = new CampiDAO(this);
        String   stNomeCampi = campiDAO.buscaNomeCampiPorId(conteudoExtra.getInt("CAMPI_LABORATORIO"));
        nomeCampi.setText(stNomeCampi);
        nomeCampi.setBackgroundColor(R.color.cinza_DCDCDC);
        nomeCampi.setEnabled(false);
	}
	
	private void carregaFuncionarios() 
    {
        Usuario obusuario                    = new Usuario();
        List<Usuario> usuarios               = obusuario.listaUsuariosPorCampi(this, Sessao.usuario.getIdcampi());
        ArrayAdapter<Usuario> usuarioAdapter = new ArrayAdapter<Usuario>(this, android.R.layout.simple_spinner_item, usuarios);  
        Spinner  combo                       = (Spinner) findViewById(R.id.cb_reserva_para_terceiro_laboratorio);
        combo.setAdapter(usuarioAdapter);
        combo.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View arg1,int arg2, long arg3) 
            {
                usuario = (Usuario) parent.getSelectedItem();  
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) 
            {
                
            }
        });
    }

	private void setaMascara() 
	{
		// Seta a mascara da data
        dataReserva = (EditText) findViewById(R.id.txt_data_reserva_laboratorio);
        insereMascara("##/##/####", dataReserva);
        
        // Seta a mascara da hora.
        horaInicial = (EditText) findViewById(R.id.txt_hora_inicial_reserva_laboratorio);
        insereMascara("##:##:##", horaInicial);
        
        // Seta a mascara da hora.
        horaFinal = (EditText) findViewById(R.id.txt_hora_final_reserva_laboratorio);
        insereMascara("##:##:##", horaFinal);
	}
	
	/**
     * Define uma mascara para o campo desejado.
     * 17-05-2015
     * @param String mascara
     * @param EditText campoData
     * @author Jannsen Brauer
     */
    public void insereMascara(String mascara, EditText campoData)
    {
        campoData.addTextChangedListener(Mask.insert(mascara, campoData));
    }
}
